package com.oa.service.admin;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.oa.pojo.*;
import com.oa.vo.EmpVo;
import com.oa.vo.FileUploadVo;
import com.oa.vo.PageResult;
import com.qiniu.common.QiniuException;

import java.io.InputStream;
import java.util.List;

/**
 * @author 一拳超人
 */
public interface AdminService {
    /**
     * 管理员登陆验证
     *
     * @param admin 账号信息
     * @return 登陆结果
     */
    Admin loginAuth(Admin admin);

    /**
     * 分页查询
     *
     * @param page 分页对象
     * @return 分页查询数据
     */
    Page<EmpVo> selectUserInfo(Page<EmpVo> page, PageResult pageResult);

    /**
     * 更新员工状态
     *
     * @param emp 需要更新的员工信息
     * @return 更新成功与否状态码
     */
    Integer updateEmpStatus(Emp emp);

    /**
     * 删除员工
     *
     * @param id 要删除的员工id
     * @return 删除状态码
     */
    Integer deleteEmp(Integer id);

    /**
     * 基于当前数据库员工信息生成员工编号
     *
     * @return 员工编号
     */
    String generateEmpId();

    /**
     * 获取部门信息
     *
     * @return 查询到的部门信息
     */
    List<Department> getDepartmentInfo(Integer level);

    /**
     * 根据部门信息获取职位信息
     *
     * @param depId 部门id
     * @return 职位列表
     */
    List<Position> getPositionInfo(Integer depId);

    /**
     * 获取学历列表
     *
     * @return 学历列表
     */
    List<Edu> getEduInfo();

    /**
     * 添加新员工
     *
     * @param emp 员工信息
     * @return 状态码
     */
    Integer addNewEmp(Emp emp);

    /**
     * 更新用户信息
     *
     * @param emp 需要更新的用户信息
     * @return 更新结果
     */
    Integer updateEmpInfo(Emp emp);

    /**
     * 获取指定员工信息
     *
     * @param id 员工信息
     * @return 员工信息
     */
    Emp getEmpInfo(Integer id);

    /**
     * 用户头像上传
     * @param inputStream 头像
     * @return 上传信息
     * @throws QiniuException 上传异常
     */
    FileUploadVo uploadEmpPhoto(InputStream inputStream) throws QiniuException;

    Integer deleteEmpPhoto(String key) throws QiniuException;
}
